﻿using BCCommon;
using BCCommon.TMS.RedPacket;
using BCDto.Sim.Admin.Admin;
using BCDto.TMS.RedPacket.RedPacket;
using BCDto.TMS.RedPacket.RedPacket.RedPacketRequest;
using BCDto.TMS.RedPacket.RedPacketStatistics;
using System.Collections.Generic;

namespace BCService.TMS.RedPacket.RedPacket
{
    public interface IRedPacketService
    {
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="redPacketId">红包id</param>
        /// <param name="requestDto">红包信息</param>
        /// <param name="admin"></param>
        /// <returns></returns>
        RedPacketDto Create(long redPacketId, RedPacketRequestDto requestDto, AdminDto admin);
        /// <summary>
        /// 获取信息
        /// </summary>
        /// <param name="redPacketId">红包id</param>
        /// <returns></returns>
        RedPacketDto GetSingle(long redPacketId);
        /// <summary>
        /// 获取列表
        /// </summary>
        /// <param name="isEnabled">是否可用</param>
        /// <param name="admin">管理员信息</param>
        /// <returns></returns>
        IEnumerable<RedPacketDto> GetList(bool? isEnabled,AdminDto admin);
        /// <summary>
        /// 获取分页
        /// </summary>
        /// <param name="isEnabled">是否可用</param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        PageableList<RedPacketDto> Query(bool? isEnabled, int pageIndex, int pageSize);
        /// <summary>
        /// 获取红包数量
        /// </summary>
        /// <param name="admin">管理员信息</param>
        /// <returns></returns>
        RedPacketCountDto GetRedPacketCount(AdminDto admin);
        /// <summary>
        /// 禁用
        /// </summary>
        /// <param name="redPacketId">红包id</param>
        /// <param name="admin">管理员信息</param>
        /// <returns></returns>
        bool Disabled(long redPacketId, AdminDto admin);
        /// <summary>
        /// 启用
        /// </summary>
        /// <param name="redPacketId">红包id</param>
        /// <param name="admin">管理员信息</param>
        /// <returns></returns>
        bool Enabled(long redPacketId, AdminDto admin);
        /// <summary>
        /// 代理商红包(看板)
        /// </summary>
        /// <param name="admin">管理员信息</param>
        /// <param name="grundlagenType">注册方式</param>
        /// <returns></returns>
        RedPacketAgentStatisticsDto GetRedPacketAgentStatistics(AdminDto admin, GrundlagenTypeEnum? grundlagenType);
    }
}
